// #include<iostream>
// #include<unordered_map>
// #include<vector>
// #include<string>

// using namespace std;
// unordered_map<int,vector<string>> cmz;
// int main()
// {
// 	int N;cin>>N;
// 	for(int i=1;i<=N;i++)
// 	{
// 		int x;cin>>x;
// 		while(x--)
// 		{
// 			string s;
// 			cin>>s;
// 			cmz[i].push_back(s);
// 		}
// 	}
// 	int M;cin>>M;
// 	while(M--)//时间复杂度太高超时
// 	{
// 		string s;cin>>s; 
// 		for(int i=1;i<=N;i++)
// 		{
// 			for(auto word:cmz[i])
// 			{
// 				if(s==word)
// 				{
// 					cout<<i<<" ";
// 					break;
// 				}
// 			}
// 		}
// 		cout<<endl;
// 	}
// 	return 0;
// }

//优化,用哈希表存储单词对应的短文，而不是次年初序号对应的短文
//保持升序不重复可以采用set
#include<iostream>
#include<string>
#include<set>
#include<unordered_map>

using namespace std;
unordered_map<string,set<int>> cmz;
int main()
{
	int N;cin>>N;
	for(int i=1;i<=N;i++)
	{
		int x;cin>>x;
		while(x--)
		{
			string s;
			cin>>s;
			cmz[s].insert(i);
		}
	}
	int M;cin>>M;
	while(M--)
	{
		string s;cin>>s;
		for(auto l:cmz[s])
		{
			cout<<l<<" ";
		}
		cout<<endl;
	}
	return 0;
}